package emas.inf;

import java.util.List;

import common.BasicAgent;

public interface Agent<Genotype> extends BasicAgent<Genotype> {

	public boolean acceptMeet(Agent<Genotype> aAskingAgent);

	public boolean acceptRepro(Agent<Genotype> aAskingAgent);

	public void LifeStep();

	public void assimilateEnergy();
	
	public void addNeighbors(List<Agent<Genotype>> aAgents);
	
	public void addNeighbor(Agent<Genotype> aAgent);
	
	public void removeNeigbor(Agent<Genotype> agent);
	
	public List<Agent<Genotype>> getNeighbors();
	
	public void loseEnergy(int aAmont);
	
	public int getEnergy();
	
	public Genotype getGenotype();
	
	//public List<Double> getValues();
	
	public void mut();
	
	public void transfer(Agent<Genotype> aToAgent);
	
	public void setHomeIsland(Island<Genotype> island);
	
	/*public Island<Genotype> getHomeIsland();*/ 
}